package com.hightrast.service.config;

import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;
import com.hightrast.service.util.SnowflakeIdGenerator;
import org.springframework.stereotype.Component;

@Component
public class CustomIdGenerator implements IdentifierGenerator {

    // 数据中心 ID，可根据实际情况修改
    private static final long DATA_CENTER_ID = 1L;
    // 机器 ID，可根据实际情况修改
    private static final long WORKER_ID = 1L;
    @Override
    public Number nextId(Object entity) {
        // 假设实体类中有 getId 方法获取 id 值
        try {
            java.lang.reflect.Method getIdMethod = entity.getClass().getMethod("getId");
            Long id = (Long) getIdMethod.invoke(entity);
            if (id != null) {
                // 如果 id 有值，使用手动赋值的 id
                return id;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        // 如果 id 没有值，这里可以返回 null 让数据库自增
        return new SnowflakeIdGenerator(DATA_CENTER_ID, WORKER_ID).nextId();
    }
}